package com.yueqian.system.controller;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yueqian.framework.entity.ResultEntity;
import com.yueqian.system.converter.UserConvert;
import com.yueqian.system.entity.User;
import com.yueqian.system.service.UserRoleService;
import com.yueqian.system.vo.req.UserRoleReqVO;
import com.yueqian.system.vo.res.UserResVO;

@RestController
@RequestMapping("/userRole")
public class UserRoleController {

	@Resource
	private UserRoleService userRoleService;


	@GetMapping("/selectPageData")
	public ResultEntity<IPage<UserResVO>> selectPageData(UserRoleReqVO userRoleReqVO) {
		Page<User> userRoleIPage = userRoleService.selectPageData(userRoleReqVO);
		Page<UserResVO> systemUserResVOPage = UserConvert.INSTANCE.toPage(userRoleIPage);
		return ResultEntity.success(systemUserResVOPage);
	}

	@GetMapping("/delete")
	public ResultEntity<Boolean> delete(@RequestParam(value = "userIds") List<Long> userIds, @RequestParam(value = "roleId") Long roleId) {
		userRoleService.delete(userIds, roleId);
		return ResultEntity.success(true);
	}

	/**
	 * 角色分配用户
	 *
	 * @param userIds
	 * @param roleId
	 */
	@GetMapping("/add")
	public ResultEntity<Boolean> add(@RequestParam(value = "userIds") List<Long> userIds, @RequestParam(value = "roleId") Long roleId) {
		return ResultEntity.success(userRoleService.add(userIds, roleId));
	}

	/**
	 * 给用户添加角色。
	 * 通过该接口，可以为指定的用户添加一个或多个角色。角色ID和用户ID通过请求参数传递。
	 *
	 * @param roleIds 用户要添加的角色ID列表，多个角色ID以列表形式传递。
	 * @param userId 要添加角色的用户ID。
	 * @return 返回操作结果的实体。成功时，包含true的ResultEntity；失败时，可能包含错误信息的ResultEntity。
	 */
	@GetMapping("/addUserRole")
	public ResultEntity<Boolean> addUserRole(@RequestParam(value = "roleIds") List<Long> roleIds, @RequestParam(value = "userId") Long userId) {
		return ResultEntity.success(userRoleService.add(userId,roleIds));
	}
}
